package server.business.service;

import java.util.Date;
import java.util.List;

import server.business.entity.Achievement;
import server.business.entity.Activity;
import server.business.entity.Item;
import server.business.entity.Lottery;
import server.business.entity.Notice;


public interface IHttpService {
    
    /**
     * 添加广播
     * @param message
     * 
     */
    public void addBroadCast(String message);
    
    
    /**
     * 新增公告
     * @param notice
     * 
     */
    public void addNotice(Notice notice);
    
    /**
     * 
     * 删除某条公告
     * @param noticeId
     */
    public boolean deleteNoticeById(String noticeId);
    
    /**
     * 更新某条公告
     * @param notice
     * 
     */
    public void updateNotice(Notice notice);
    
    /**
     * 获取当前公告列表
     * @return
     */
    public List<Notice>showCurrentList();
    
    /**
     * 获取所有公告（含未显示）
     * 
     * @return
     */
    public List<Notice>showAllNotices();
    
    /**
     * 获取所有玩家信息
     * 
     * @return
     */
    public List<server.business.entity.User> showAllUsers();
    
    /**
     * 
     * 获取在线玩家信息
     * @return
     */
    public List<server.business.entity.User> showOnlineUsers();
    
    /**
     * 
     * 获取某个玩家信息
     * @param userId
     * @return
     */
    public server.business.entity.User getUserById(String userId);
    
    
    /**
     * 获取某个玩家信息
     * @param userName
     * @return
     */
    public server.business.entity.User getUserByName(String userName);
    
    /**
     * 
     * 获取某个玩家的成就
     * @param userId
     * @return
     */
    public List<Achievement> getAchievementById(String userId);
    
    
    /**
     * 获取某个玩家的道具
     * @param userId
     * @return
     */
    public List<Item> getItemById(String userId);
    
    /**
     * 
     * 将某个玩家踢下线
     * @param userId
     */
    public void kickOutById(String userId);
    
    /**
     * 禁言
     * @param userId
     */
    public void shutup(String userId);
    
    /**
     * 冻结某个玩家
     * @param userId
     */
    public void freezeById(String userId);
    
    /**
     * 重置某个玩家密码
     * 
     * @param userId
     * @param password
     */
    public boolean resetPassword(String userId,String password);
    
    /**
     * 增加某个玩家的金币
     * @param userId
     * @param gold
     */
    public boolean increaseCoins(String userId,String currency,long coins);
    
    /**
     * 
     * @param userId
     * @param gold
     */
    public boolean decreaseCoins(String userId,String currency,long coins);
    
    /**
     * 增加玩家积分
     * @param userId
     * @param score
     */
    public void increaseScore(String userId,long score);
    
    /**
     * 减少玩家积分
     * @param userId
     * @param score
     */
    public void decreaseScore(String userId,long score);
    
    /**
     * 提升VIP
     * @param userId
     */
    public void upgradeVIP(String userId);
    
    /**
     * 取消VIP
     * @param userId
     */
    public void degradeVIP(String userId);
    
    /**
     * 提升等级，注意，默认level为1
     * @param userId
     * @param level
     */
    public void upgrade(String userId,String level);
    
    /**
     * 降低等级，注意，默认level 为1
     * @param userId
     * @param level
     */
    public void degrade(String userId,String level);
    
    /**
     * 财富榜，默认前20？
     * @return
     */
    public List<server.business.entity.User>richList(String currency);
    
    /**
     * 等级榜，默认前20？
     * @return
     */
    public List<server.business.entity.User>scoreList();
    
    /**
     * 成就榜，默认前20？
     * @return
     */
    public List<server.business.entity.User>achieveList();
    
    /**
     * 胜率榜，默认前20？
     * @return
     */
    public List<server.business.entity.User>winRatioList();
    
    
    /**
     * 获取活动列表
     * @return
     */
    public List<Activity> showActivityList();
    
    /**
     * 获取中奖信息
     * 
     * @param activityId
     * @return
     */
    public List<Lottery> showLotteryList(String activityId);
    
    /**
     * 解禁发言
     * @param userId
     */
    public void releaseTalk(String userId);
    
    /**
     * 解禁登录
     * @param userId
     */
    public void releaseLogin(String userId);
    
    /**
     * 修改vip时间
     * @param userId
     * @param vipDate
     */
    public void updateVIPDate(String userId, Date vipDate);
    
    /**
     * 充值，返回的结果是充值后的总余额
     * @param userId
     * @param currency
     * @param coins
     * @return 充值后的余额
     */
    public long recharge(String userId,String currency,long coins);

}
